#ifndef UTILS_H
#define UTILS_H
#include <QJsonObject>
#include <QMessageBox>
#include <QPixmap>
#include <QString>

QT_BEGIN_NAMESPACE
class QFormLayout;
QT_END_NAMESPACE

namespace utils {

// 返回窗口的屏幕显示比例
qreal devicePixelRatio(QWindow* window);

// 返回Widget是否是高清(high definition)显示
bool isHD(QWidget* widget);

// 显示消息框
QMessageBox::StandardButton
msgBox(QWidget* parent, const QString& title, const QString& text,
       QMessageBox::StandardButtons buttons = QMessageBox::Ok,
       QMessageBox::StandardButton defaultButton = QMessageBox::NoButton,
       QMessageBox::Icon icon = QMessageBox::NoIcon);

// 标签最佳尺寸
QSize labelPreferredSize(QFormLayout* layout);

/*!
 * \brief 生成圆形图片
 * \param path: 图片全路径
 * \param size: 原尺寸
 * \return 图片
 */
QPixmap circlePixmap(const QString& path, const QSize& size);

QPixmap uniformPixmap(const QString& path, const QSize& size);

QString wrapToolTip(const QString& text, int width = 600);

/*
 * @brief 资源管理器中选择文件
 */
void showFileInFolder(const QString& path);

/*
 * @brief 时间的显示文本
 */
QString clockDisplayString(qint64 ms);

/*
 * @brief 获取系统总内存大小，单位为字节
 */
qint64 getTotalSystemMemory();

/*
 * @brief 创建一个目录，尽可能地在非系统盘
 */
QString createDirectoryInNonSystemDrive(const QString& dir_name);

bool isSystemDrive(const QString& dirPath);

} // namespace utils

#endif // UTILS_H
